import Mock from 'mockjs'

/**
 * RolesMock 模拟数据
 */
class RolesMock {

    // 显示资源选项
    option(option) {
        let param = this.parseOption(option);
        let data = {
            options_of_status: { 0: '待审核', 1: '启用', 2: '禁用' },
        }
        return this.stdMessage(param._success, '没有数据', data);
    }

    // 显示资源列表
    index(option) {

        // <el-table-column prop="Seq" label="顺序" sortable> </el-table-column>


        let param = this.parseOption(option);
        console.log('[角色模拟数据] 显示资源列表 param=', param, '&option=', option);
        // 可以通过传参 _success 来控制返回消息的成功状态。
        let data = {
            total: 1,
            current_page: 1,
            last_age: 1,
            data: [
                { Id: 1, Name: '管理员', Seq: '1', created_at: Mock.mock('@datetime("yyyy-MM-dd HH:mm:ss")') },
            ],
        };
        return this.stdMessage(param._success, '错误', data);
    }

    // 显示指定的资源
    read(option) {
        let param = this.parseOption(option);
        console.log('[角色模拟数据] 显示指定的资源 param=', param, '&option=', option);
        if (param.id == undefined) {
            return this.stdMessage(false, '参数无效');
        }

        let data = {
            id: 1,
            title: '管理员',
            status: "1",
            permissions: [311, 312, 314]
        }
        return this.stdMessage(param._success, 'ID无效', data);
    }

    // 保存新建的资源
    save(option) {
        let param = this.parseOption(option);
        console.log('[角色模拟数据] 保存新建的资源 param=', param, '&option=', option);
        if (!param.Name) {
            return this.stdMessage(false, '角色名称必填项');
        }
        return Mock.mock({
            success: param._success, // '@boolean'
            message: '@ctitle',
            code: 200,
            'data': {
                'id': '@id', // 随机编号
            }
        })
    }

    // 保存更新的资源
    update(option) {
        let param = this.parseOption(option);
        console.log('[角色模拟数据] 保存更新的资源 param=', param, '&option=', option);
        if (!param.Id || isNaN(param.Id)) {
            return this.stdMessage(false, '参数无效');
        }
        return Mock.mock({
            success: param._success, // '@boolean'
            message: '@ctitle',
            code: 200,
            'data': {
                'id': param.id, // 随机编号
            }
        })

    }

    // 删除指定资源
    delete(option) {
        console.log('option==',option)
        let param = this.parseOption(option);
        console.log('[角色模拟数据] 删除指定资源 param=', param, '&option=', option);
        if (param.ids == undefined) {
            return this.stdMessage(false, '参数无效');
        }
        return Mock.mock({
            success: param._success, // '@boolean'
            message: '@ctitle',
            code: 200,
            'data': {
                'id': param.id, // 随机编号
            }
        })
    }

    // 解析参数 option= {url:'/api/read?id=1', type:'GET', data:null}
    parseOption(option) {
        let param = {}
        if (option.url.indexOf('?') > -1) {
            new URLSearchParams(option.url.substring(option.url.indexOf('?') + 1)).forEach((v, k) => {
                param[k] = v;
            })
        }
        if (option.body) {
            if (option.body instanceof FormData) {
                option.body.forEach((v, k) => {
                    param[k] = v;
                })
            } else {
                param = JSON.parse(option.body);
            }
        }
        // 可以通过传参 _success 来控制返回消息的成功状态。默认返回成功消息。
        if (typeof (param._success) != 'boolean') {
            param._success = true;
        }
        return param;
    }

    // 返回标准消息对象
    stdMessage(success, message, data = '', code = 0) {
        return {
            success: success,
            message: message,
            data: data,
            code: code,
        }
    }
}
export default new RolesMock;